package main

import "fmt"

func sum(n1 int, n2 int) int {
	//当执行到defer时，暂时不执行，会将defer后面的语句压入到独立的栈 （defer栈）
	//当函数执行！！完毕后！！！，再从defer栈，按照先入后出的方式出栈，执行
	// TODO 注意 在defer讲语句放入到栈时，也会将相关的值copy同时入栈
	defer fmt.Println("ok1 n1=", n1) //defer //这里还是10
	defer fmt.Println("ok2 n2=", n2) //defer //这里还是20

	n1++ // 11
	n2++ // 21

	res := n1 + n2
	fmt.Println("ok3 res=", res)
	return res
}

func main() {

	sum(10, 20)
}
